\RequirePackage{expl3}
\ProvidesExplPackage{textcircle-cid}%
  {2019-05-09}{v0.1}{Circled numbers in Adobe Japan1-7}

\sys_if_engine_xetex:TF
  {
    \RequirePackage { fontspec }
    \cs_set:Npn \CID #1 { \tex_XeTeXglyph:D #1 \scan_stop: }
  }
  {
    \sys_if_engine_luatex:TF
      { \RequirePackage { luatexja-fontspec, luatexja-otf } }
      {
        \sys_if_engine_uptex:TF
          { \RequirePackage [ uplatex ] { otf } }
          { \msg_fatal:nn { textcircle-cid } { require-unicode-engine } }
      }
  }
\msg_new:nnn { textcircle-cid } { require-unicode-engine }
  { `textcircle-cid'~ package~ only~ support~ XeTeX,~ LuaTeX~ and~ upTeX. }

\clist_const:Nn \c_@@_cid_clist
  {
    {   0 } {  8224 } { 10503 } { 10764 } { 11037 } { 11307 } { 11576 },
    {   1 } {  7555 } { 8286  } { 10766 } { 11039 } { 11309 } { 11578 },
    {   2 } {  7556 } { 8287  } { 10768 } { 11041 } { 11311 } { 11580 },
    {   3 } {  7557 } { 8288  } { 10770 } { 11043 } { 11313 } { 11582 },
    {   4 } {  7558 } { 8289  } { 10772 } { 11045 } { 11315 } { 11584 },
    {   5 } {  7559 } { 8290  } { 10774 } { 11047 } { 11317 } { 11586 },
    {   6 } {  7560 } { 8291  } { 10776 } { 11049 } { 11319 } { 11588 },
    {   7 } {  7561 } { 8292  } { 10778 } { 11051 } { 11321 } { 11590 },
    {   8 } {  7562 } { 8293  } { 10780 } { 11053 } { 11323 } { 11592 },
    {   9 } {  7563 } { 8294  } { 10782 } { 11055 } { 11325 } { 11594 },
    {  00 } { 10234 } { 10504 } { 10765 } { 11038 } { 11308 } { 11577 },
    {  01 } { 10235 } { 10505 } { 10767 } { 11040 } { 11310 } { 11579 },
    {  02 } { 10236 } { 10506 } { 10769 } { 11042 } { 11312 } { 11581 },
    {  03 } { 10237 } { 10507 } { 10771 } { 11044 } { 11314 } { 11583 },
    {  04 } { 10238 } { 10508 } { 10773 } { 11046 } { 11316 } { 11585 },
    {  05 } { 10239 } { 10509 } { 10775 } { 11048 } { 11318 } { 11587 },
    {  06 } { 10240 } { 10510 } { 10777 } { 11050 } { 11320 } { 11589 },
    {  07 } { 10241 } { 10511 } { 10779 } { 11052 } { 11322 } { 11591 },
    {  08 } { 10242 } { 10512 } { 10781 } { 11054 } { 11324 } { 11593 },
    {  09 } { 10243 } { 10513 } { 10783 } { 11056 } { 11326 } { 11595 },
    {  10 } {  7564 } { 10514 } { 10784 } { 11057 } { 11327 } { 11596 },
    {  11 } {  7565 } { 10515 } { 10785 } { 11058 } { 11328 } { 11597 },
    {  12 } {  7566 } { 10516 } { 10786 } { 11059 } { 11329 } { 11598 },
    {  13 } {  7567 } { 10517 } { 10787 } { 11060 } { 11330 } { 11599 },
    {  14 } {  7568 } { 10518 } { 10788 } { 11061 } { 11331 } { 11600 },
    {  15 } {  7569 } { 10519 } { 10789 } { 11062 } { 11332 } { 11601 },
    {  16 } {  7570 } { 10520 } { 10790 } { 11063 } { 11333 } { 11602 },
    {  17 } {  7571 } { 10521 } { 10791 } { 11064 } { 11334 } { 11603 },
    {  18 } {  7572 } { 10522 } { 10792 } { 11065 } { 11335 } { 11604 },
    {  19 } {  7573 } { 10523 } { 10793 } { 11066 } { 11336 } { 11605 },
    {  20 } {  7574 } { 10524 } { 10794 } { 11067 } { 11337 } { 11606 },
    {  21 } {  8091 } { 10525 } { 10795 } { 11068 } { 11338 } { 11607 },
    {  22 } {  8102 } { 10526 } { 10796 } { 11069 } { 11339 } { 11608 },
    {  23 } {  8103 } { 10527 } { 10797 } { 11070 } { 11340 } { 11609 },
    {  24 } {  8104 } { 10528 } { 10798 } { 11071 } { 11341 } { 11610 },
    {  25 } {  8105 } { 10529 } { 10799 } { 11072 } { 11342 } { 11611 },
    {  26 } {  8106 } { 10530 } { 10800 } { 11073 } { 11343 } { 11612 },
    {  27 } {  8107 } { 10531 } { 10801 } { 11074 } { 11344 } { 11613 },
    {  28 } {  8108 } { 10532 } { 10802 } { 11075 } { 11345 } { 11614 },
    {  29 } {  8109 } { 10533 } { 10803 } { 11076 } { 11346 } { 11615 },
    {  30 } {  8110 } { 10534 } { 10804 } { 11077 } { 11347 } { 11616 },
    {  31 } {  8111 } { 10535 } { 10805 } { 11078 } { 11348 } { 11617 },
    {  32 } { 10244 } { 10536 } { 10806 } { 11079 } { 11349 } { 11618 },
    {  33 } { 10245 } { 10537 } { 10807 } { 11080 } { 11350 } { 11619 },
    {  34 } { 10246 } { 10538 } { 10808 } { 11081 } { 11351 } { 11620 },
    {  35 } { 10247 } { 10539 } { 10809 } { 11082 } { 11352 } { 11621 },
    {  36 } { 10248 } { 10540 } { 10810 } { 11083 } { 11353 } { 11622 },
    {  37 } { 10249 } { 10541 } { 10811 } { 11084 } { 11354 } { 11623 },
    {  38 } { 10250 } { 10542 } { 10812 } { 11085 } { 11355 } { 11624 },
    {  39 } { 10251 } { 10543 } { 10813 } { 11086 } { 11356 } { 11625 },
    {  40 } { 10252 } { 10544 } { 10814 } { 11087 } { 11357 } { 11626 },
    {  41 } { 10253 } { 10545 } { 10815 } { 11088 } { 11358 } { 11627 },
    {  42 } { 10254 } { 10546 } { 10816 } { 11089 } { 11359 } { 11628 },
    {  43 } { 10255 } { 10547 } { 10817 } { 11090 } { 11360 } { 11629 },
    {  44 } { 10256 } { 10548 } { 10818 } { 11091 } { 11361 } { 11630 },
    {  45 } { 10257 } { 10549 } { 10819 } { 11092 } { 11362 } { 11631 },
    {  46 } { 10258 } { 10550 } { 10820 } { 11093 } { 11363 } { 11632 },
    {  47 } { 10259 } { 10551 } { 10821 } { 11094 } { 11364 } { 11633 },
    {  48 } { 10260 } { 10552 } { 10822 } { 11095 } { 11365 } { 11634 },
    {  49 } { 10261 } { 10553 } { 10823 } { 11096 } { 11366 } { 11635 },
    {  50 } { 10262 } { 10554 } { 10824 } { 11097 } { 11367 } { 11636 },
    {  51 } { 10263 } { 10555 } { 10825 } { 11098 } { 11368 } { 11637 },
    {  52 } { 10264 } { 10556 } { 10826 } { 11099 } { 11369 } { 11638 },
    {  53 } { 10265 } { 10557 } { 10827 } { 11100 } { 11370 } { 11639 },
    {  54 } { 10266 } { 10558 } { 10828 } { 11101 } { 11371 } { 11640 },
    {  55 } { 10267 } { 10559 } { 10829 } { 11102 } { 11372 } { 11641 },
    {  56 } { 10268 } { 10560 } { 10830 } { 11103 } { 11373 } { 11642 },
    {  57 } { 10269 } { 10561 } { 10831 } { 11104 } { 11374 } { 11643 },
    {  58 } { 10270 } { 10562 } { 10832 } { 11105 } { 11375 } { 11644 },
    {  59 } { 10271 } { 10563 } { 10833 } { 11106 } { 11376 } { 11645 },
    {  60 } { 10272 } { 10564 } { 10834 } { 11107 } { 11377 } { 11646 },
    {  61 } { 10273 } { 10565 } { 10835 } { 11108 } { 11378 } { 11647 },
    {  62 } { 10274 } { 10566 } { 10836 } { 11109 } { 11379 } { 11648 },
    {  63 } { 10275 } { 10567 } { 10837 } { 11110 } { 11380 } { 11649 },
    {  64 } { 10276 } { 10568 } { 10838 } { 11111 } { 11381 } { 11650 },
    {  65 } { 10277 } { 10569 } { 10839 } { 11112 } { 11382 } { 11651 },
    {  66 } { 10278 } { 10570 } { 10840 } { 11113 } { 11383 } { 11652 },
    {  67 } { 10279 } { 10571 } { 10841 } { 11114 } { 11384 } { 11653 },
    {  68 } { 10280 } { 10572 } { 10842 } { 11115 } { 11385 } { 11654 },
    {  69 } { 10281 } { 10573 } { 10843 } { 11116 } { 11386 } { 11655 },
    {  70 } { 10282 } { 10574 } { 10844 } { 11117 } { 11387 } { 11656 },
    {  71 } { 10283 } { 10575 } { 10845 } { 11118 } { 11388 } { 11657 },
    {  72 } { 10284 } { 10576 } { 10846 } { 11119 } { 11389 } { 11658 },
    {  73 } { 10285 } { 10577 } { 10847 } { 11120 } { 11390 } { 11659 },
    {  74 } { 10286 } { 10578 } { 10848 } { 11121 } { 11391 } { 11660 },
    {  75 } { 10287 } { 10579 } { 10849 } { 11122 } { 11392 } { 11661 },
    {  76 } { 10288 } { 10580 } { 10850 } { 11123 } { 11393 } { 11662 },
    {  77 } { 10289 } { 10581 } { 10851 } { 11124 } { 11394 } { 11663 },
    {  78 } { 10290 } { 10582 } { 10852 } { 11125 } { 11395 } { 11664 },
    {  79 } { 10291 } { 10583 } { 10853 } { 11126 } { 11396 } { 11665 },
    {  80 } { 10292 } { 10584 } { 10854 } { 11127 } { 11397 } { 11666 },
    {  81 } { 10293 } { 10585 } { 10855 } { 11128 } { 11398 } { 11667 },
    {  82 } { 10294 } { 10586 } { 10856 } { 11129 } { 11399 } { 11668 },
    {  83 } { 10295 } { 10587 } { 10857 } { 11130 } { 11400 } { 11669 },
    {  84 } { 10296 } { 10588 } { 10858 } { 11131 } { 11401 } { 11670 },
    {  85 } { 10297 } { 10589 } { 10859 } { 11132 } { 11402 } { 11671 },
    {  86 } { 10298 } { 10590 } { 10860 } { 11133 } { 11403 } { 11672 },
    {  87 } { 10299 } { 10591 } { 10861 } { 11134 } { 11404 } { 11673 },
    {  88 } { 10300 } { 10592 } { 10862 } { 11135 } { 11405 } { 11674 },
    {  89 } { 10301 } { 10593 } { 10863 } { 11136 } { 11406 } { 11675 },
    {  90 } { 10302 } { 10594 } { 10864 } { 11137 } { 11407 } { 11676 },
    {  91 } { 10303 } { 10595 } { 10865 } { 11138 } { 11408 } { 11677 },
    {  92 } { 10304 } { 10596 } { 10866 } { 11139 } { 11409 } { 11678 },
    {  93 } { 10305 } { 10597 } { 10867 } { 11140 } { 11410 } { 11679 },
    {  94 } { 10306 } { 10598 } { 10868 } { 11141 } { 11411 } { 11680 },
    {  95 } { 10307 } { 10599 } { 10869 } { 11142 } { 11412 } { 11681 },
    {  96 } { 10308 } { 10600 } { 10870 } { 11143 } { 11413 } { 11682 },
    {  97 } { 10309 } { 10601 } { 10871 } { 11144 } { 11414 } { 11683 },
    {  98 } { 10310 } { 10602 } { 10872 } { 11145 } { 11415 } { 11684 },
    {  99 } { 10311 } { 10603 } { 10873 } { 11146 } { 11416 } { 11685 },
    { 100 } { 10312 } { 10604 } { 10874 } { 11147 } { 11417 } { 11686 },
  }

\cs_new_protected:Npn \@@_def_command:nnnnnnn #1#2#3#4#5#6#7
  {
    \cs_set:cpn { @@_circled_           #1 } { \CID {#2} }
    \cs_set:cpn { @@_black_circled_     #1 } { \CID {#3} }
    \cs_set:cpn { @@_boxed_             #1 } { \CID {#4} }
    \cs_set:cpn { @@_black_boxed_       #1 } { \CID {#5} }
    \cs_set:cpn { @@_round_boxed_       #1 } { \CID {#6} }
    \cs_set:cpn { @@_black_round_boxed_ #1 } { \CID {#7} }
  }
\clist_map_inline:Nn \c_@@_cid_clist
  { \@@_def_command:nnnnnnn #1 }
\cs_set:Npn \CIDtextcircled      #1 { \use:c { @@_circled_           #1 } }
\cs_set:Npn \CIDtextblackcircled #1 { \use:c { @@_black_circled_     #1 } }
\cs_set:Npn \CIDtextboxed        #1 { \use:c { @@_boxed_             #1 } }
\cs_set:Npn \CIDtextblackboxed   #1 { \use:c { @@_black_boxed_       #1 } }
\cs_set:Npn \CIDtextrboxed       #1 { \use:c { @@_round_boxed_       #1 } }
\cs_set:Npn \CIDtextblackrboxed  #1 { \use:c { @@_black_round_boxed_ #1 } }

\cs_new_protected:Npn \@@_test_cid:N #1
  {
    \int_step_inline:nnn {  0 } {   9 } { #1 {   ##1 } ~ }
    \int_step_inline:nnn {  0 } {   9 } { #1 { 0 ##1 } ~ }
    \int_step_inline:nnn { 10 } { 100 } { #1 {   ##1 } ~ }
  }
